package com.gxuwz.stats.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.exception.ExcelAnalysisStopException;
import com.alibaba.excel.util.StringUtils;
import com.gxuwz.stats.entity.ResearchProject;
import com.gxuwz.stats.entity.ResearchProjectExcelDTO;
import com.gxuwz.stats.service.ExcelDataConverter;
import com.gxuwz.stats.service.ResearchProjectService;
import com.gxuwz.stats.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

//@Slf4j
//public class ResearchProjectExcelListener extends BaseExcelListener<ResearchProjectExcelDTO> {
//    private final ResearchProjectService projectService;
//    private final ExcelDataConverter converter;
//
//    public ResearchProjectExcelListener(UserService userService,
//                                        ResearchProjectService projectService,
//                                        ExcelDataConverter converter) {
//        super(userService);
//        this.projectService = projectService;
//        this.converter = converter;
//    }
//
//
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    protected void saveData() {
//        System.out.println("daozheli!");
//        for (ResearchProjectExcelDTO dto : dataList) {
//            System.out.println("dataList="+dataList);
//            try {
//                Integer userId = getUserId(dto.getUsername());
//
////                if (isInvalidRow(dto)) {
////                    log.warn("跳过无效数据行: {}", dto);
////                    continue; // 跳过无效数据行
////                }
////                if (userId == null || isFooterRow(dto)) {
////                    continue; // 跳过无效数据或表尾行
////                }
//                System.out.println("1243243424242");
//                List<ResearchProject> projects = converter.convertToProjects(dto, userId);
////                ResearchProjectExcelDTO researchProject = new ResearchProjectExcelDTO();
//                String username = dto.getUsername();
//                String provincialProjectName = dto.getProvincialProjectName();
//                String cityProjectName = dto.getCityProjectName();
//                String schoolProjectName = dto.getSchoolProjectName();
//                String transverseProjectName = dto.getTransverseProjectName();
//                String selfProjectName = dto.getSelfProjectName();
//// 检查是否为无效数据行
//                if(username == null || username.trim().isEmpty() ||
//                        provincialProjectName == null || provincialProjectName.trim().isEmpty() ||
//                        cityProjectName == null || cityProjectName.trim().isEmpty() ||
//                        schoolProjectName == null || schoolProjectName.trim().isEmpty() ||
//                        transverseProjectName == null || transverseProjectName.trim().isEmpty() ||
//                        selfProjectName == null || selfProjectName.trim().isEmpty() ){
//                    continue;
//
//                }
//                System.out.println("111="+projects);
//                projectService.saveBatch(projects);
//            } catch (Exception e) {
//                log.error("保存科研项目数据失败: {}", dto, e);
//                throw new RuntimeException("数据保存失败", e);
//            }
//        }
//    }
//
//    private boolean isFooterRow(ResearchProjectExcelDTO dto) {
//        // 假设所有字段均为空表示表尾
//        return StringUtils.isEmpty(dto.getNationalProjectName()) &&
//                StringUtils.isEmpty(dto.getProvincialProjectName()) &&
//                StringUtils.isEmpty(dto.getCityProjectName()) &&
//                StringUtils.isEmpty(dto.getSchoolProjectName()) &&
//                StringUtils.isEmpty(dto.getTransverseProjectName()) &&
//                StringUtils.isEmpty(dto.getSelfProjectName());
//    }
//
//    private boolean isInvalidRow(ResearchProjectExcelDTO dto) {
//        // 如果所有关键字段都为空，则认为是无效数据行
//        return StringUtils.isEmpty(dto.getUsername()) &&
//                StringUtils.isEmpty(dto.getNationalProjectName()) &&
//                StringUtils.isEmpty(dto.getProvincialProjectName()) &&
//                StringUtils.isEmpty(dto.getCityProjectName()) &&
//                StringUtils.isEmpty(dto.getSchoolProjectName()) &&
//                StringUtils.isEmpty(dto.getTransverseProjectName()) &&
//                StringUtils.isEmpty(dto.getSelfProjectName());
//    }
//}
